package com.cgmnx.admin.service.rbac;

import com.cgmnx.admin.common.bean.Limiter;
import com.cgmnx.admin.dao.entity.rbac.UserEntity;
import com.cgmnx.admin.model.enums.rbac.UserStatus;
import com.google.common.base.Optional;

import java.util.List;


public interface UserService {

    /**
     * 创建用户
     *
     * @param user
     */
    Integer save(UserEntity user);

    /**
     * 更新用户信息
     */
    int updateUser(UserEntity user);

    /**
     * 设置用户状态
     *
     * @param id
     */
    int updateStatus(List<Integer> id, UserStatus userStatus, String updateUser);

    /**
     * 根据条件搜索用户信息
     *
     * @param userName
     * @return
     */
    List<UserEntity> queryUserByName(String userName);

    /**
     * 根据条件搜索用户信息
     *
     * @param searchName 查询条件
     * @param limiter    分页信息
     * @return
     */
    List<UserEntity> queryPage(String searchName, String userId, Limiter limiter);

    /**
     * 根据条件统计用户数量
     *
     * @param searchName
     * @return
     */
    int count(String searchName, String userId);

    /**
     * 根据ID获取用户信息
     *
     * @param id
     * @return
     */
    Optional<UserEntity> queryUserById(int id);

    /**
     * 根据账号名称获取用户信息
     *
     * @param userId
     * @return
     */
    Optional<UserEntity> queryUserByUserId(String userId);

    Optional<UserEntity> queryUserByEmail(String email);

    List<UserEntity> queryByIdList(List<Integer> idList);

    List<UserEntity> queryByUserList(List<String> userIds);
}
